package leetcode每日一题.leetcode20212;


import java.util.Arrays;

/**
 * 1. 问题描述
 *      给定长度为2n的整数数组nums,你的任务是将这些数分成n对,例如(a1,b1),(a2,b2),...,(an,bn),
 *      使得从1到n的min(ai,bi)总和最大返回该最大总和 。
 *
 * 2. 算法分析
 *      思路题，代码非常简单，下面的代码中有思路的详细注释
 *
 * 3. 代码实现
 */
@SuppressWarnings("all")
public class Q017_划分数组1 {
    // 排序
    // 题目求的是使得从 1 到 n 的 min(ai, bi) 总和最大
    // 由于min是返回两者之间最小的，而最终的总和又需要最大
    // 所以尽可能使得大的元素之间配对，小的元素之间配对。如果大的元素和小的元素配对
    // 最终只能返回小的，那么总和就不可能最大
    public int arrayPairSum(int[] nums) {
        Arrays.sort(nums);
        int n = nums.length;
        int res = 0;
        for(int i = 0; i < n; i+=2) {
            res+=nums[i];
        }
        return res;
    }
}
